<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
	// * pending变为fulfilled (可以通过调用resolve)
	// * pending变为rejected  (可以通过调用reject或产生异常)
	// 说明: 只有这2种, 且一个promise对象只能改变一次。

    // 无论变为成功还是失败, 都会有一个结果数据。
    // 成功的结果数据一般称为value, 失败的结果数据一般称为reason。
	{
		// p 可以称为Promise实例，Promise对象。
		// const p = new Promise(function(){
        //
        // });
		// // state初始状态：pending
        // // value初始值：undefined
		// console.log(p);
    }
	{
		// 改变Promise实例状态方案1： 调用resolve函数，该函数可以将状态从pending变为fulfilled,该函数接收的值即是状态值
        // 执行器回调函数会接收两个参数,两个参数的类型都是函数
        // const p = new Promise(function(resolve,reject){
		// 	// 执行器函数（立即调用）
		// 	// console.log(1);
        //     resolve(100);// pending------>fulfilled    undefined---->100
        // });
		// // state状态为：fulfilled
        // // value的值为：100
		// console.log(p);
    }
	{
		// 改变Promise实例状态方案2：reject函数接收的值为失败值，会将状态更改为失败（rejected）
        // const p = new Promise((resolve,reject)=>{
        //     reject(200);// pending------>rejected  undefined------>200
        // })
		// console.log(p);
    }
	{
		// 改变Promise实例状态方案3:执行器函数产生异常,状态更改为失败（rejected),值更改为失败信息
		// const p = new Promise((resolve,reject)=>{
        //     // let a = 1;
		// 	// a();
        //
        //     // 抛出异常
        //     throw "异常"
        // });
		// console.log(p);
    }
	{
		// 状态以及值只允许更改一次
        // const p = new Promise((resolve,reject)=>{
		// 	resolve(100);
		// 	reject(200);
        // })
		// console.log(p);
    }

</script>
</html>